// 它允许你在运行时获取通过装饰器附加到类、方法或属性上的元数据
// 元数据是描述数据的数据。在 JavaScript 中，可以通过装饰器为类、方法或属性附加元数据，例如类型信息、依赖注入标记等。
import "reflect-metadata";

// 定义一个装饰器，附加元数据
function LogMetadata(key: string, value: any) {
  return Reflect.metadata(key, value);
}

@LogMetadata("role", "UserService")
class User {
  @LogMetadata("type", "string")
  name!: string;
}

// 获取类的元数据
const role = Reflect.getMetadata("role", User);
console.log(role); // 输出: "UserService"

// 获取属性的元数据
const type = Reflect.getMetadata("type", User.prototype, "name");
console.log(type); // 输出: "string"
